﻿<?xml version="1.0" encoding="utf-8"?>
<!--
//<filedescription file="SampleInstallConfig.xsd" company="Microsoft">
//  <copyright>
//     Copyright © Microsoft Corporation.  All rights reserved.
//     ***  DESIGNATED SAMPLE CODE (per the included software license terms) ***
//      THIS CODE SAMPLE IS MADE AVAILABLE TO YOU WITHOUT WARRANTY OF ANY KIND
//      AND CONFERS NO RIGHTS ON YOU WHATSOEVER EXCEPT THE RIGHT TO REVIEW IT
//      SOLELY AS A REFERENCE.  THE ENTIRE RISK OF USE OR RESULTS FROM USE OF
//      THIS CODE SAMPLE REMAINS WITH YOU.
//  </copyright>
//  <purpose>
//     This schema defines the available elements to be used with the Integration Kit's
//     ObjectInstaller class to manipulate objects within SCCM.
//  </purpose>
//  <notes>
//  </notes>
//</filedescription>
-->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="InstallConfiguration">
    <xs:complexType>
      <xs:sequence minOccurs="1" maxOccurs="1">
        <xs:element name="StatusText" maxOccurs="1" minOccurs="0" type="xs:string"></xs:element>
        <xs:element name="Prerequisites__TO_BE_IMPLEMENTED" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence minOccurs="0" maxOccurs="1">
              <xs:element name="SetSCCMConnection" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                  <xs:all>
                  <xs:element name="ServerName" type="xs:string" minOccurs="1" />
                  <xs:element name="UserDomain" type="xs:string"  minOccurs="0" />
                  <xs:element name="UserName" type="xs:string" minOccurs="0"/>
                  <xs:element name="UserPassword" type="xs:string" minOccurs="0" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
              <xs:element name="SCCMComponentsRequired" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Component" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:attribute name="Name" type="SCCMComponentTypes" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="WindowsComponentsRequired" minOccurs="0" maxOccurs="1" >
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Component" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:attribute name="Name" type="WindowsComponentTypes" />
                        <xs:attribute name="MinVersion" type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="OSRequirements" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                  <xs:choice>
                    <xs:element name="RequiredOS" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:attribute name="OSName" type="xs:string" use="required"/>
                        <xs:attribute name="Build" type="xs:string" use="required"/>
                        <xs:attribute name="ServicePack" type="xs:string" use="optional"/>
                      </xs:complexType>
                    </xs:element>
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Downloads" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="DownloadItem" maxOccurs="unbounded" >
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
                          <xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1"/>
                          <xs:element name="FileType" type="DownloadFileTypes" minOccurs="1" maxOccurs="1" />
                          <xs:element name="FileLocationType" type="DownloadFileLocationTypes" minOccurs="1" maxOccurs="1"/>
                          <xs:element name="FileSourceUri" type="xs:anyURI" minOccurs="1" maxOccurs="1" />
                          <xs:element name="FileDestinationPath" type="xs:string" minOccurs="1" maxOccurs="1"/>
                          <xs:element name="ActionAfterDownload" minOccurs="0" maxOccurs="unbounded" type="TaskTemplate"/>
                        </xs:sequence>
                        <xs:attribute name="ID" type="xs:string" use="required"/>
                      </xs:complexType>
                    </xs:element>
                  </xs:choice>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="InstallActions" minOccurs="1" maxOccurs="1" >
          <xs:complexType>
            <xs:all>
              <xs:element name="ImportMofFiles" minOccurs ="0" maxOccurs="1">
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="ImportMofFile" minOccurs="0" maxOccurs="unbounded" >
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element  name="Path" type="PathToFile" minOccurs="1" maxOccurs="1" />
                        </xs:sequence>
                        <xs:attribute name="Action" type="AddRemoveActions" />
                        <xs:attribute name="FileName" type="xs:string" />
                        <xs:attribute name="ReplaceVariables" type="BoolString" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="UpdateDialogsHelpInfo" minOccurs="0" maxOccurs="unbounded" >
                      <xs:complexType>
                        <xs:attribute name="Action" type="AddRemoveActions" />
                        <xs:attribute name="ClassName" type="xs:string" />
                        <xs:attribute name="HelpId" type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="SiteRoles__TO_BE_IMPLEMENTED" minOccurs="0" maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <!--
                    
                    NEED TO REDO TO ADD ACTUAL SPECIFIC INFORMATION
                    This is stubbed in with other properties
                                        
                    -->
                    <xs:element name="PXEServicePoint">
                    </xs:element>
                    <xs:element name="ManagementPoint">
                    </xs:element>
                    <xs:element name="SiteServer">
                    </xs:element>
                    <xs:element name="SiteDatabaseServer">
                    </xs:element>
                    <xs:element name="SiteSystem">
                    </xs:element>
                    <xs:element name="ReportingPoint">
                    </xs:element>
                    <xs:element name="DistributionPoint">
                    </xs:element>
                    <xs:element name="SoftwareUpdatePoint">
                    </xs:element>
                    <xs:element name="SystemHealthValidatorPoint">
                    </xs:element>
                    <xs:element name="StateMigrationPoint">
                    </xs:element>
                    <xs:element name="AdminConsole">
                    </xs:element>
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Folders"  minOccurs="0" maxOccurs="1"  >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="Folder" type="FolderProperties" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Queries__TO_BE_IMPLEMENTED" minOccurs="0" maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <!--
                    
                    NEED TO REDO TO ADD ACTUAL QUERY-SPECIFIC INFORMATION
                    This is stubbed in with package properties
                    
                    
                    -->
                    <xs:element name="Query_Create" type="PackagePropertiesType" />
                    <xs:element name="Query_Delete" type="PackagePropertiesType" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Packages" minOccurs="0"  maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="SWDPackage" type="PackagePropertiesType" />
                    <xs:element name="OSInstallPackage__TO_BE_IMPLEMENTED" type="PackagePropertiesType" />
                    <xs:element name="BootImagePackage" type="BootImagePackageProperties" />
                    <xs:element name="BootImagePackage_InjectChanges" type="BootImagePackageModifications" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Programs__TO_BE_IMPLEMENTED" minOccurs="0" maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <!--
                    
                    NEED TO REDO TO ADD ACTUAL PROGRAM-SPECIFIC INFORMATION
                    This is stubbed in with package properties
                    
                    
                    -->
                    <xs:element name="Program_Create__TO_BE_IMPLEMENTED" type="PackagePropertiesType" />
                    <xs:element name="Program_Delete__TO_BE_IMPLEMENTED" type="PackagePropertiesType" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Advertisements__TO_BE_IMPLEMENTED" minOccurs="0" maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <!--
                    
                    NEED TO REDO TO ADD ACTUAL ADVERTISEMENT-SPECIFIC INFORMATION
                    This is stubbed in with package properties
                    
                    
                    -->
                    <xs:element name="Advertisement_Create__TO_BE_IMPLEMENTED" type="PackagePropertiesType" />
                    <xs:element name="Advertisement_Delete__TO_BE_IMPLEMENTED" type="PackagePropertiesType" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Drivers" minOccurs="0"  maxOccurs="1" >
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Category" type="CategoryPropertyValues" minOccurs="0"  maxOccurs="unbounded" />
                    <xs:element name="DriverPackage" type="PackagePropertiesType" minOccurs="0"  maxOccurs="unbounded" />
                    <xs:element name="Driver" minOccurs="0" maxOccurs="unbounded" >
                      <xs:complexType>
                        <xs:sequence maxOccurs="unbounded">
                          <xs:element type="PathToFile"  name="DriverPath" />
                          <xs:choice maxOccurs="1">
                            <xs:element type="xs:string" name="INFFile"/>
                            <xs:element type="xs:string" name="OEMFile"/>
                          </xs:choice>
                          <xs:group maxOccurs="unbounded" ref="DriverImportActions"/>
                        </xs:sequence>
                        <xs:attribute name="Action" type="DriverActions">
                        </xs:attribute>
                        <xs:attribute name="ID" type="xs:string">
                          <xs:annotation>
                            <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
                          </xs:annotation>
                        </xs:attribute>
                        
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="TaskSequences__TO_BE_IMPLEMENTED" minOccurs="0"  maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="TaskSequence_Create" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:choice>
                          <xs:element name="Step" maxOccurs="unbounded" type="TaskSequenceStep" />
                          <xs:element name="Group" maxOccurs="unbounded" type="TaskSequenceGroup" />
                        </xs:choice>
                        <xs:attribute name="ID" type="xs:string">
                          <xs:annotation>
                            <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
                          </xs:annotation>
                        </xs:attribute>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="TaskSequencePackage_Create" type="TaskSequencePackagePropertyValues" />
                    <xs:element name="TaskSequencePackage_Delete" type="TaskSequencePackagePropertyValues" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Collections" minOccurs="0" maxOccurs="1"  >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="Collection_Create" type="CollectionProperties" />
                    <xs:element name="Collection_Delete">
                      <xs:complexType>
                        <xs:attribute name="CollectionID"  type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="SubCollection_Create" type="CollectionProperties" />
                    <xs:element name="Collection_Refresh">
                      <xs:complexType>
                        <xs:attribute name="CollectionID"  type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="MembershipRule_Add" >
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="CollectionID"  type="xs:string" />
                          <xs:element name="RuleName"  type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="CCR_Create">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:group ref="CCRProperties" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="CCR_CreateForCollection">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="CollectionID"  type="xs:string" />
                          <xs:element name="IncludeSubCollections" type="BoolString" />
                          <xs:group ref="CCRProperties" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="AllMembers_Delete">
                      <xs:complexType>
                        <xs:attribute name="CollectionID"  type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="MembershipRule_Delete" >
                      <xs:complexType>
                        <xs:attribute name="CollectionID"  type="xs:string" />
                        <xs:attribute name="RuleName"  type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="Reports__TO_BE_IMPLEMENTED" minOccurs="0" maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <!--
                    
                    NEED TO REDO TO ADD ACTUAL REPORT-SPECIFIC INFORMATION
                    This is stubbed in with package properties
                    
                    
                    -->
                    <xs:element name="Report_Create" type="PackagePropertiesType" />
                    <xs:element name="Report_Delete" type="PackagePropertiesType" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
              <xs:element name="CustomActions" minOccurs="0" maxOccurs="1" >
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="CustomAction" type="CustomActionPropertiesType" />
                  </xs:choice>
                </xs:complexType>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="OtherTasks" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              
              <xs:element name="RunCommandLine__TO_BE_IMPLEMENTED" minOccurs="0" maxOccurs="unbounded" type="TaskTemplate"/>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="SchemaVersion" type="xs:decimal" use="required" />
      <xs:attribute name="Created" type="xs:dateTime" use="optional" />
    </xs:complexType>
  </xs:element>

  
  <!-- 
  
  BEGIN INDIVIDUAL ELEMENT TYPE DEFINITIONS
  
  -->
  <xs:complexType name="PathToFile" mixed="true">
    <xs:attribute name="IsRelative" type="BoolString"/>
    <xs:attribute name="RelativeTo">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ConfigMgrLocalInstallDir" />
          <xs:enumeration value="AdminUILocalInstallDir" />
          <xs:enumeration value="WimFileExpandDir" />
          <xs:enumeration value="WaikRootDir" />
          <xs:enumeration value="SiteUncShare" />
          <xs:enumeration value="SystemDir" />
          <xs:enumeration value="SystemDrive" />
          <xs:enumeration value="SystemRoot" />
          <xs:enumeration value="ProgramFiles" />
          <xs:enumeration value="Temp" />
          <xs:enumeration value="Nothing" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
 
    
  <xs:simpleType name="SCCMComponentTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PXEServicePoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ManagementPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SiteServer">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SiteDatabaseServer">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SiteSystem">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ReportingPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DistributionPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SoftwareUpdatePoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SystemHealthValidatorPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="StateMigrationPoint">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AdminConsole">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="WindowsComponentTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="WindowsDeploymentServices">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WindowsAutomatedInstallationKit">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WSUS">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IIS">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DNS">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DHCP">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Hypervisor">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>


  <xs:simpleType name="ConsoleExtensionTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Folder">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FolderItem">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SearchFolder">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Collection">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Query">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Report">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Schedule">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CustomAction">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PackageTypeValues">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PACKAGE">
        <xs:annotation>
          <xs:documentation>
            Regular software distribution package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DRIVER">
        <xs:annotation>
          <xs:documentation>
            Driver package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TASK_SEQUENCE">
        <xs:annotation>
          <xs:documentation>
            Task sequence package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SOFTWARE_UPDATE">
        <xs:annotation>
          <xs:documentation>
            Software update package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DEVICE_SETTING">
        <xs:annotation>
          <xs:documentation>
            Device setting package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OS_IMAGE">
        <xs:annotation>
          <xs:documentation>
            Image package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BOOT_IMAGE">
        <xs:annotation>
          <xs:documentation>
            Boot image package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OS_INSTALL">
        <xs:annotation>
          <xs:documentation>
            Operating system install package.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PackageSourceFlagValues">
    <xs:restriction base="xs:string">
      <xs:enumeration value="STORAGE_DIRECT">
        <xs:annotation>
          <xs:documentation>
            (DEFAULT) Take source files directly from the source without compression. Use this flag when the source files are located on the local server or when a Universal Naming Convention (UNC) path has been specified to a persistent storage location.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="STORAGE_NEEDS_SPECIFYING">
        <xs:annotation>
          <xs:documentation>
            The user specifies the source file storage (UNC Path or local)
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="STORAGE_NO_SOURCE">
        <xs:annotation>
          <xs:documentation>
            The program does not use source files.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="STORAGE_COMPRESS">
        <xs:annotation>
          <xs:documentation>
            Compress the source files and copy them to the site server. Use this flag when the package source files are coming from a CD or a nonpersistent medium. Configuration Manager puts the path to where the files were copied in StoredPkgPath.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="STORAGE_LOCAL">
        <xs:annotation>
          <xs:documentation>
            Take source files from a local source.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PackageFlagsValues">
    <xs:restriction base="xs:string">
      <xs:enumeration value="USE_BINARY_DELTA_REP">
        <xs:annotation>
          <xs:documentation>
            (DEFAULT) Marks the package to be replicated by distribution manager using binary delta replication
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DO_NOT_DOWNLOAD">
        <xs:annotation>
          <xs:documentation>
            Do not download the package to branch distribution points, as it will be pre-staged.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PERSIST_IN_CACHE">
        <xs:annotation>
          <xs:documentation>
            Persist the package in the cache.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>

      <xs:enumeration value="NO_PACKAGE">
        <xs:annotation>
          <xs:documentation>
            The package does not require distribution points.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="USE_SPECIAL_MIF">
        <xs:annotation>
          <xs:documentation>
            This value determines if Configuration Manager uses MIFName, MIFPublisher, and MIFVersion for MIF file status matching. Otherwise, Configuration Manager uses Name, Manufacturer, and Version for status matching. For more information, see the Remarks section later in this topic.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DISTRIBUTE_ON_DEMAND">
        <xs:annotation>
          <xs:documentation>
            The package is allowed to be distributed on demand to branch distribution points.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PackageShareTypeValues">
    <xs:restriction base="xs:int">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>
            (default} SHARE_COMMON
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>
            SHARE_SPECIFIC. If you specify SHARE_SPECIFIC, you must provide a value for ShareName.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PriorityValues">
    <xs:restriction base="xs:string">
      <xs:enumeration value="HIGH" />
      <xs:enumeration value="NORMAL" />
      <xs:enumeration value="LOW" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="AdvertisementFlagsValues">
    <xs:restriction base="xs:string">
      <xs:enumeration value="NONE">
        <xs:annotation>
          <xs:documentation>
            (DEFAULT)  None
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IMMEDIATE">
        <xs:annotation>
          <xs:documentation>
            IMMEDIATE. Announce the advertisement to the user immediately
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ONSYSTEMSTARTUP">
        <xs:annotation>
          <xs:documentation>
            ONSYSTEMSTARTUP. Announce the advertisement to the user on system startup.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ONUSERLOGON">
        <xs:annotation>
          <xs:documentation>
            ONUSERLOGON. Announce the advertisement to the user on logon
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ONUSERLOGOFF">
        <xs:annotation>
          <xs:documentation>
            ONUSERLOGOFF. Announce the advertisement to the user on logoff
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WINDOWS_CE">
        <xs:annotation>
          <xs:documentation>
            WINDOWS_CE. The advertisement is for a device client.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DONOT_FALLBACK">
        <xs:annotation>
          <xs:documentation>
            DONOT_FALLBACK. Do not fall back to unprotected distribution points
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ENABLE_TS_FROM_CD_AND_PXE">
        <xs:annotation>
          <xs:documentation>
            ENABLE_TS_FROM_CD_AND_PXE. The task sequence is available to removable media and the pre-boot execution environment (PXE) service point
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="20">
        <xs:annotation>
          <xs:documentation>
            OVERRIDE_SERVICE_WINDOWS. Override maintenance windows in announcing the advertisement to the user
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="REBOOT_OUTSIDE_OF_SERVICE_WINDOWS">
        <xs:annotation>
          <xs:documentation>
            REBOOT_OUTSIDE_OF_SERVICE_WINDOWS. Reboot outside of maintenance windows
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WAKE_ON_LAN_ENABLED">
        <xs:annotation>
          <xs:documentation>
            WAKE_ON_LAN_ENABLED. Announce the advertisement to the user with Wake On LAN enabled
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SHOW_PROGRESS">
        <xs:annotation>
          <xs:documentation>
            SHOW_PROGRESS. Announce the advertisement to the user showing task sequence progress
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NO_DISPLAY">
        <xs:annotation>
          <xs:documentation>
            NO_DISPLAY. The user should not run programs independently of the assignment
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ONSLOWNET">
        <xs:annotation>
          <xs:documentation>
            ONSLOWNET. Assignments are mandatory over a slow network connection
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TaskSequenceLogicalOperatorType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="and" />
      <xs:enumeration value="or" />
      <xs:enumeration value="not" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TaskSequenceSoftwareVersionOperatorType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="AnyVersion" />
      <xs:enumeration value="thisVersion" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TaskSequenceComparisonOperatorType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="exists" />
      <xs:enumeration value="notExists" />
      <xs:enumeration value="equals" />
      <xs:enumeration value="notEquals" />
      <xs:enumeration value="less" />
      <xs:enumeration value="lessEqual" />
      <xs:enumeration value="greater" />
      <xs:enumeration value="greaterEqual" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RegistryValueTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="REG_BINARY" />
      <xs:enumeration value="REG_DWORD" />
      <xs:enumeration value="REG_EXPAND_SZ" />
      <xs:enumeration value="REG_MULTI_SZ" />
      <xs:enumeration value="REG_NONE" />
      <xs:enumeration value="REG_QWORD" />
      <xs:enumeration value="REG_SZ" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TaskSequencePackageProgramFlags">
    <xs:restriction base="xs:string">
      <xs:enumeration value="AUTHORIZED_DYNAMIC_INSTALL">
        <xs:annotation>
          <xs:documentation>
            AUTHORIZED_DYNAMIC_INSTALL. The program is authorized for dynamic installation
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="USE_CUSTOM_PROGRESS_MSG">
        <xs:annotation>
          <xs:documentation>
            USE_CUSTOM_PROGRESS_MSG. The program uses a customized progress message.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WINDOWS_CE">
        <xs:annotation>
          <xs:documentation>
            WINDOWS_CE. Use Windows CE as the device program. If this value is set, the program is not offered to desktop clients
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RUN_DEPENDANT_ALWAYS">
        <xs:annotation>
          <xs:documentation>
            RUN_DEPENDANT_ALWAYS. Always run the immediate dependent of the program
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="COUNTDOWN">
        <xs:annotation>
          <xs:documentation>
            COUNTDOWN. Display the countdown dialog
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DISABLED">
        <xs:annotation>
          <xs:documentation>
            DISABLED. The program is disabled
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UNATTENDED">
        <xs:annotation>
          <xs:documentation>
            UNATTENDED. The program requires no user interaction.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="USERCONTEXT">
        <xs:annotation>
          <xs:documentation>
            USERCONTEXT. The program needs to run in the user context. Always set the value to 0
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ADMINRIGHTS">
        <xs:annotation>
          <xs:documentation>
            ADMINRIGHTS. The program must run under administrator rights
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EVERYUSER">
        <xs:annotation>
          <xs:documentation>
            EVERYUSER. The program must be run by every user for whom it is valid. This setting is valid only for mandatory jobs. Always set the value to 0
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NOUSERLOGGEDIN">
        <xs:annotation>
          <xs:documentation>
            NOUSERLOGGEDIN. The program is run only when no user is logged on
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OKTOQUIT">
        <xs:annotation>
          <xs:documentation>
            OKTOQUIT. Program shutdown is enabled. Always set the value to 0
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OKTOREBOOT">
        <xs:annotation>
          <xs:documentation>
            OKTOREBOOT. Computer reboot is enabled. Always set the value to 0.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="USEUNCPATH">
        <xs:annotation>
          <xs:documentation>
            USEUNCPATH. Program access uses a Universal Naming Convention (UNC) path
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PERSISTCONNECTION">
        <xs:annotation>
          <xs:documentation>
            PERSISTCONNECTION. The program connection is persisted. Always set the value to 0.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RUNMINIMIZED">
        <xs:annotation>
          <xs:documentation>
            RUNMINIMIZED. Maximize the program window. Always set the value to 0
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RUNMAXIMIZED">
        <xs:annotation>
          <xs:documentation>
            RUNMAXIMIZED. Minimize the program window. Always set the value to 0.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HIDEWINDOW">
        <xs:annotation>
          <xs:documentation>
            HIDEWINDOW. Hide the program window
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OKTOLOGOFF">
        <xs:annotation>
          <xs:documentation>
            OKTOLOGOFF. Logoff is enabled. Always set the value to 0
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RUNACCOUNT">
        <xs:annotation>
          <xs:documentation>
            RUNACCOUNT. Run the program using account access
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ANY_PLATFORM">
        <xs:annotation>
          <xs:documentation>
            ANY_PLATFORM. The program can run on any operating system
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="STILL_RUNNING">
        <xs:annotation>
          <xs:documentation>
            STILL_RUNNING. The program is currently running
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SUPPORT_UNINSTALL">
        <xs:annotation>
          <xs:documentation>
            SUPPORT_UNINSTALL. The program has an uninstall utility. Always set the value to 0
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SHOW_IN_ARP">
        <xs:annotation>
          <xs:documentation>
            SHOW_IN_ARP. Display the program in Add or Remove Programs
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="OSServerDetails">
    <xs:sequence>
      <xs:element name="Namespace" type="xs:string"  minOccurs="1" />
      <xs:element name="Query" type="xs:string"  minOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="ArchitectureTypes">
    <xs:restriction base="xs:string" >
      <xs:enumeration value="x86" />
      <xs:enumeration value="ia64" />
      <xs:enumeration value="amd64" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="TaskSequenceVariableConditionExpression">
    <xs:all minOccurs="1">
      <xs:element name="Operator" type="TaskSequenceComparisonOperatorType" />
      <xs:element  name="Value" type="xs:string"/>
      <xs:element  name="Variable" type="xs:string"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="TaskSequenceFolderConditionExpression">
    <xs:all minOccurs="1">
      <xs:element name="DateTime" type="xs:dateTime"/>
      <xs:element  name="DateTimeOperator" type="TaskSequenceComparisonOperatorType" />
      <xs:element  name="Path" type="xs:string"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="TaskSequenceFileConditionExpression">
    <xs:all minOccurs="1">
      <xs:element name="DateTime" type="xs:dateTime"/>
      <xs:element  name="DateTimeOperator" type="TaskSequenceComparisonOperatorType" />
      <xs:element  name="Path" type="xs:string"/>
      <xs:element  name="Version" type="xs:string" />
      <xs:element  name="VersionOperator" type="TaskSequenceComparisonOperatorType"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="TaskSequenceSoftwareConditionExpression">
    <xs:all minOccurs="1">
      <xs:element name="Operator" type="TaskSequenceSoftwareVersionOperatorType"  />
      <xs:element name="ProductCode" type="xs:string"/>
      <xs:element name="ProductName" type="xs:string"/>
      <xs:element name="UpgradeCode" type="xs:string"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="TaskSequenceRegistryConditionExpression">
    <xs:all minOccurs="1">
      <xs:element name="Data" type="xs:string"/>
      <xs:element name="KeyPath" type="xs:string" />
      <xs:element name="Operator" type="TaskSequenceComparisonOperatorType"/>
      <xs:element name="Type" type="RegistryValueTypes"/>
      <xs:element name="Value" type="xs:string"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="TaskSequenceWMIConditionExpression">
    <xs:all minOccurs="1">
      <xs:element name="Namespace" type="xs:string"/>
      <xs:element name="Query" type="xs:string"  />
    </xs:all>
  </xs:complexType>

  <xs:complexType name="TaskSequenceCondition">
    <xs:choice>
      <xs:element name="TaskSequenceWMIConditionExpression" type="TaskSequenceWMIConditionExpression" />
      <xs:element name="TaskSequenceRegistryConditionExpression" type="TaskSequenceRegistryConditionExpression" />
      <xs:element name="TaskSequenceSoftwareConditionExpression" type="TaskSequenceSoftwareConditionExpression" />
      <xs:element name="TaskSequenceFileConditionExpression" type="TaskSequenceFileConditionExpression" />
      <xs:element name="TaskSequenceFolderConditionExpression" type="TaskSequenceFolderConditionExpression" />
      <xs:element name="TaskSequenceVariableConditionExpression" type="TaskSequenceVariableConditionExpression" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="FolderProperties">
    <xs:all>
      <xs:element name="Name" type="xs:string" minOccurs="1" />
      <xs:element name="ObjectType" type="ContainerObjectTypes"  minOccurs="1"/>
      <xs:element name="ParentFolder" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>(Optional - leave blank to use the default parent node).
          Enter the name of the folder that this folder will be placed into. The name can be an existing folder name or an ID string of a folder in this XML.
          The folder must already exist before using as a parent (it will not be created automatically). </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SearchString" type="xs:string"  minOccurs="0">
        <xs:annotation>
          <xs:documentation>(Optional - enter XML search string to make this a search folder).
          Search criteria for the folder. For more information, see 'Configuration Manager Search Folder XML' in the SDK. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NewParentFolder" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            (Optional - used only when using the UPDATE option to move a folder to a new node).
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:all>
    <xs:attribute name="Action" type="GeneralObjectActions"/>
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    
  </xs:complexType>

  
  <xs:simpleType name="ContainerObjectTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Package"/>
      <xs:enumeration value="Advertisement"/>
      <xs:enumeration value="Query"/>
      <xs:enumeration value="Report"/>
      <xs:enumeration value="MeteredProductRule"/>
      <xs:enumeration value="ConfigurationItem"/>
      <xs:enumeration value="OperatingSystemInstallPackage"/>
      <xs:enumeration value="StateMigration"/>
      <xs:enumeration value="ImagePackage"/>
      <xs:enumeration value="BootImagePackage"/>
      <xs:enumeration value="TaskSequencePackage"/>
      <xs:enumeration value="DeviceSettingPackage"/>
      <xs:enumeration value="DriverPackage"/>
      <xs:enumeration value="Driver"/>
      <xs:enumeration value="SoftwareUpdate"/>
      <xs:enumeration value="ConfigurationBaseline"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:simpleType name="LanguageTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="English"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="GeneralObjectActions">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Create"/>
      <xs:enumeration value="Delete" />
      <xs:enumeration value="RefreshDPs" />
      <xs:enumeration value="Update" />                      
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="AddRemoveActions">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Create"/>
      <xs:enumeration value="Delete" />
      <xs:enumeration value="Update" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DriverActions">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CreateFromInf"/>
      <xs:enumeration value="CreateFromOem"/>
      <xs:enumeration value="Delete" />
      <xs:enumeration value="Update" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="BootImageActions">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CreateFromWim"/>
      <xs:enumeration value="CreateFromExistingWim"/>
      <xs:enumeration value="CreateFromWaik"/>
      <xs:enumeration value="ExportDefault"/>
      <xs:enumeration value="RefreshDPs"/>
      <xs:enumeration value="Delete" />
      <xs:enumeration value="Update" />
    </xs:restriction>
  </xs:simpleType>


  <xs:complexType name="PackagePropertiesType">
    <xs:choice maxOccurs="unbounded">
      <xs:element  name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
      <xs:element  name="Manufacturer" type="xs:string"  minOccurs="0" maxOccurs="1"/>
      <xs:element  name="Description" type="xs:string"  minOccurs="0" maxOccurs="1"/>
      <xs:element  name="Version" type="xs:string"  minOccurs="0"  maxOccurs="1"/>
      <xs:element  name="PackageType" type="PackageTypeValues" minOccurs="1" maxOccurs="1"/>
      <xs:element  name="PkgSourcePath" type="PathToFile" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <!--<xs:element  name="PkgFlags" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="PackageFlag" type="PackageFlagsValues">
              <xs:annotation>
                <xs:documentation>
                  Flags specifying special properties of the package. Possible values are:
                  DO_NOT_DOWNLOAD. Do not download the package to branch distribution points, as it will be pre-staged.

                  PERSIST_IN_CACHE. Persist the package in the cache.

                  USE_BINARY_DELTA_REP. Marks the package to be replicated by distribution manager using binary delta replication.

                  NO_PACKAGE. The package does not require distribution points.

                  USE_SPECIAL_MIF. This value determines if Configuration Manager uses MIFName, MIFPublisher, and MIFVersion for MIF file status matching. Otherwise, Configuration Manager uses Name, Manufacturer, and Version for status matching. For more information, see the Remarks section later in this topic.

                  DISTRIBUTE_ON_DEMAND. The package is allowed to be distributed on demand to branch distribution points.
                </xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element  name="Language"  type="LanguageTypes" default="English" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element  name="PkgSourceFlag" type="PackageSourceFlagValues" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Flag indicating the method of reading the package source files. Possible values are listed below. The default value is STORAGE_NO_SOURCE (1).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element  name="Priority"  type="PriorityValues" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element  name="ShareName"  type="xs:string" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element  name="ShareType" type="PackageShareTypeValues" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The type of share used by the distribution point when sharing the package. Possible values are listed below, with the default value SHARE_COMMON. If you specify SHARE_SPECIFIC, you must provide a value for ShareName.</xs:documentation>
        </xs:annotation>
      </xs:element>-->
      <xs:element name="Folder" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions"/>
          <xs:attribute name="FolderName" type="xs:string" />
          <xs:attribute name="ParentContainerNode" type="xs:string" />
        </xs:complexType>
      </xs:element>
      <xs:element name="DistributionPoint" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions"/>
          <xs:attribute name="SiteCode" type="xs:string"/>
          <xs:attribute name="NALPath" type="xs:string"/>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Action" type="GeneralObjectActions"/>
  </xs:complexType>


  <xs:group name="PackagePropertiesValues">
    <xs:sequence>
      <xs:element  name="Name" type="xs:string" minOccurs="1"/>
      <xs:element  name="Manufacturer" type="xs:string"  minOccurs="0"/>
      <xs:element  name="Description" type="xs:string"  minOccurs="0"/>
      <xs:element  name="Version" type="xs:string"  minOccurs="0" />
      <xs:element  name="PackageType" type="PackageTypeValues" minOccurs="1"/>
      <xs:element  name="PkgSourcePath" type="PathToFile"  minOccurs="1">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <!--<xs:element  name="PkgFlags" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="PackageFlag" type="PackageFlagsValues">
              <xs:annotation>
                <xs:documentation>
                  Flags specifying special properties of the package. Possible values are:
                  DO_NOT_DOWNLOAD. Do not download the package to branch distribution points, as it will be pre-staged.

                  PERSIST_IN_CACHE. Persist the package in the cache.

                  USE_BINARY_DELTA_REP. Marks the package to be replicated by distribution manager using binary delta replication.

                  NO_PACKAGE. The package does not require distribution points.

                  USE_SPECIAL_MIF. This value determines if Configuration Manager uses MIFName, MIFPublisher, and MIFVersion for MIF file status matching. Otherwise, Configuration Manager uses Name, Manufacturer, and Version for status matching. For more information, see the Remarks section later in this topic.

                  DISTRIBUTE_ON_DEMAND. The package is allowed to be distributed on demand to branch distribution points.
                </xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element  name="Language"  type="LanguageTypes" default="English" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element  name="PkgSourceFlag" type="PackageSourceFlagValues" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Flag indicating the method of reading the package source files. Possible values are listed below. The default value is STORAGE_NO_SOURCE (1).</xs:documentation>
        </xs:annotation>
      </xs:element>
     
      <xs:element  name="Priority"  type="PriorityValues" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element  name="ShareName"  type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Share to use on the distribution point. The name can include directories. If the directories do not exist, Configuration Manager creates them. You must specify a share name if you set ShareType to SHARE_SPECIFIC</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element  name="ShareType" type="PackageShareTypeValues" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The type of share used by the distribution point when sharing the package. Possible values are listed below, with the default value SHARE_COMMON. If you specify SHARE_SPECIFIC, you must provide a value for ShareName.</xs:documentation>
        </xs:annotation>
      </xs:element>-->
      <xs:element name="AddToConsoleFolder" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="FolderName" type="xs:string" />
          <xs:attribute name="ParentContainerNode" type="xs:string" />
        </xs:complexType>
      </xs:element>
      <xs:element name="AddDistributionPoint" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:string" name="SiteCode"/>
            <xs:element type="xs:string" name="NALPath" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>


  <xs:simpleType name="CategoryTypeValues">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DriverCategories"/>
      <xs:enumeration value="Product"/>
      <xs:enumeration value="Locale"/>
      <xs:enumeration value="Classification"/>
      <xs:enumeration value="Company"/>
      <xs:enumeration value="Product Family"/>
      <xs:enumeration value="User"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:complexType name="TaskSequenceActionTypes">
    <xs:choice>
      <xs:element name="NOT_YET_IMPLEMENTED" type="xs:string" nillable="true"/>
      <!--<xs:element name="ApplyDataImageAction" type="ApplyDataImageAction"/>
      <xs:element name="ApplyDriverPackageAction" type="ApplyDriverPackageAction"/>
      <xs:element name="ApplyNetworkSettingsAction" type="ApplyNetworkSettingsAction"/>
      <xs:element name="ApplyOperatingSystemAction" type="ApplyOperatingSystemAction"/>
      <xs:element name="ApplyWindowsSettingsAction" type="ApplyWindowsSettingsAction"/>
      <xs:element name="AutoApplyAction" type="AutoApplyAction"/>
      <xs:element name="CaptureNetworkSettingsAction" type="CaptureNetworkSettingsAction"/>
      <xs:element name="CaptureSystemImageAction" type="CaptureSystemImageAction"/>
      <xs:element name="CaptureUserStateAction" type="CaptureUserStateAction"/>
      <xs:element name="CaptureWindowsSettingsAction" type="CaptureWindowsSettingsAction"/>
      <xs:element name="ConnectNetworkFolderAction" type="ConnectNetworkFolderAction"/>
      <xs:element name="ConvertDiskAction" type="ConvertDiskAction"/>
      <xs:element name="DisableBitLockerAction" type="DisableBitLockerAction"/>
      <xs:element name="EnableBitLockerAction" type="EnableBitLockerAction"/>
      <xs:element name="InstallDeployToolsAction" type="InstallDeployToolsAction"/>
      <xs:element name="InstallSoftwareAction" type="InstallSoftwareAction"/>
      <xs:element name="InstallUpdateAction" type="InstallUpdateAction"/>
      <xs:element name="JoinDomainWorkgroupAction" type="JoinDomainWorkgroupAction"/>
      <xs:element name="NetworkAdapterSettings" type="NetworkAdapterSettings"/>
      <xs:element name="OSConditionGroup" type="OSConditionGroup"/>
      <xs:element name="OSExpressionGroup" type="OSExpressionGroup"/>
      <xs:element name="PartitionDiskAction" type="PartitionDiskAction"/>
      <xs:element name="PartitionSettings" type="PartitionSettings"/>
      <xs:element name="PrepareOSAction" type="PrepareOSAction"/>
      <xs:element name="PrepareSMSClientAction" type="PrepareSMSClientAction"/>
      <xs:element name="RebootAction" type="RebootAction"/>
      <xs:element name="ReleaseStateStoreAction" type="ReleaseStateStoreAction"/>
      <xs:element name="RequestStateStoreAction" type="RequestStateStoreAction"/>
      <xs:element name="RestoreUserStateAction" type="RestoreUserStateAction"/>
      <xs:element name="RunCommandLineAction" type="RunCommandLineAction"/>
      <xs:element name="SetupWindowsAndSMSAction" type="SetupWindowsAndSMSAction"/>
      <xs:element name="SetVariableAction" type="SetVariableAction"/>-->
    </xs:choice>
  </xs:complexType>

  <!--<xs:complexType name="OLD_CategoryPropertyValues">
    <xs:all>
      <xs:element name="LocalizedProperties">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="LocalizedProperty" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="CategoryInstanceName" type="xs:string">
                  <xs:annotation>
                    <xs:documentation>Display name of the category instance. The default value is "".</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="LocaleID" type="xs:int" default="1033" >
                  <xs:annotation>
                    <xs:documentation>ID for the locale associated with the category instance. For a list, see http://www.microsoft.com/globaldev/reference/lcid-all.mspx</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>-->

  
  <xs:complexType name="CategoryPropertyValues">
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Action" type="GeneralObjectActions"/>
    <xs:attribute name="CategoryName" type="xs:string">
      <xs:annotation>
        <xs:documentation>Display name of the category instance. The default value is "".</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="BootImagePackageProperties" mixed="true">
    <xs:choice maxOccurs="unbounded">
      <xs:group ref="PackagePropertiesValues" />
      <xs:element name="Architecture" type="ArchitectureTypes" maxOccurs="1"  />
      <xs:element name="ImageIndex" type="xs:string" default="1" maxOccurs="1"/>
      <xs:element name="BackgroundBitmapPath" type="xs:string" maxOccurs="1"/>
      <xs:element name="EnableLabShell" type="BoolString" maxOccurs="1"/>
      <xs:element name="Version" type="xs:string"  minOccurs="0"  maxOccurs="1"/>
      <xs:element name="MinOsVersion" type="WinPeVersions" maxOccurs="1"/>
      <xs:element name="ImageImportPath" type="PathToFile"  maxOccurs="1"/>
      <xs:element name="Folder" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions"/>
          <xs:attribute name="FolderName" type="xs:string" />
          <xs:attribute name="ParentContainerNode" type="xs:string" />
        </xs:complexType>
      </xs:element>
      <xs:element name="DistributionPoint" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions"/>
          <xs:attribute name="SiteCode" type="xs:string"/>
          <xs:attribute name="NALPath" type="xs:string"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="ImportFromWaikOptions">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="Architecture" type="ArchitectureTypes" minOccurs="1" maxOccurs="1" />
            <xs:element name="ImageIndex" type="xs:string" default="1" maxOccurs="1"/>
            <xs:element name="Packages" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                  <xs:element name="AddPackage" minOccurs="0" maxOccurs="unbounded" type="WinPePackageNames" >
                    <xs:annotation>
                      <xs:documentation>By default, the Scripting, WMI and XML packages are already added to the boot image.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:choice>
              </xs:complexType>
            </xs:element>
            <xs:element name="ScratchSpace" minOccurs="0" maxOccurs="1">
              <xs:simpleType>
                <xs:annotation>
                  <xs:documentation>
                  Sets the available scratch space, in megabytes. Valid values are 32, 64, 128, 256 and 512.
                  </xs:documentation>
                </xs:annotation>
                <xs:restriction base="xs:integer">
                  <xs:enumeration value="32"></xs:enumeration>
                  <xs:enumeration value="64"></xs:enumeration>
                  <xs:enumeration value="128"></xs:enumeration>
                  <xs:enumeration value="256"></xs:enumeration>
                  <xs:enumeration value="512"></xs:enumeration>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute name="Action" type="BootImageActions" />
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>


  <xs:complexType name="BootImagePackageModifications" mixed="true">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="PackageToModify" type="xs:string"  minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>The name of the package the needs to be modified. Default is the unique name ("ID") given to a boot image package specified in this XML. Also checked is the name of an existing boot image.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CopyFilesToWim" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="CopyFileToWim" minOccurs="1" maxOccurs="unbounded" type="CopyFileToWimTemplate" >
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="RegistryUpdates" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="RegistryUpdate" minOccurs="1" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="ImportRegFile" type="PathToFile" minOccurs="1" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:attribute name="HiveName" type="RegistryHiveNames" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element name="ImportDrivers" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="ImportDriver" minOccurs="1" maxOccurs="unbounded" type="WimDriverImport">
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>


  <xs:simpleType name="RegistryHiveNames" >
    <xs:restriction base="xs:string">
      <xs:enumeration value="HKLM" />
      <xs:enumeration value="HKCU" />
      <xs:enumeration value="HKCR" />
      <xs:enumeration value="HKCC" />
      <xs:enumeration value="HKU" />      
    </xs:restriction>
  </xs:simpleType>


  <xs:complexType name="WimDriverImport" mixed="true">
    <xs:sequence>
      <xs:element name="DriverSourcePath" type="PathToFile"  minOccurs="1">
      </xs:element>
      <xs:element name="CopyToWimPath" type="xs:string"  minOccurs="1">
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="WinPePackageNames">
    <xs:restriction base="xs:string">
      <xs:enumeration value="WinPE-MDAC-Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WinPE-HTA-Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WinPE-FontSupport-JA-JP-Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WinPE-FontSupport-KO-KR-Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WinPE-FontSupport-ZH-CN-Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WinPE-FontSupport-ZH-HK-Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WinPE-FontSupport-ZH-TW-Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WAIK30-winpe-legacysetup">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WAIK30-winpe-pppoe">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WAIK30-winpe-setup">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WAIK30-winpe-setup-client">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WAIK30-winpe-setup-server">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WAIK30-winpe-wds-tools">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>


  <xs:simpleType name="WinPeVersions" >
    <xs:restriction base="xs:string">
      <xs:enumeration value="6.0.6001.17138">
        <xs:annotation>
          <xs:documentation>WinPE version 2.0 (Vista RTM)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6.0.6001.18000">
        <xs:annotation>
          <xs:documentation>WinPE version 2.1 (Vista SP1)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6.1.7000.0">
        <xs:annotation>
          <xs:documentation>WinPE version 3.0 (Windows 7)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>


  <xs:complexType name="CopyFileToWimTemplate" mixed="true">
    <xs:sequence>
      <xs:element name="CopyFromPath" type="PathToFile"  minOccurs="1">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CopyToWimPath" type="xs:string"  minOccurs="1">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="IsDirectory" type="BoolString" use="optional"></xs:attribute>
  </xs:complexType>


  <xs:complexType name="ImportDriverInWimTemplate" mixed="true">
    <xs:sequence>
      <xs:element name="ImportDriver" type="PathToFile"  minOccurs="1">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CopyToWimPath" type="xs:string"  minOccurs="1">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>



  <xs:complexType name="WaikBootImagePackageProperties" mixed="true">
    <xs:choice maxOccurs="1">
      <xs:group ref="PackagePropertiesValues" />
      <xs:element name="Architecture" type="ArchitectureTypes" maxOccurs="1"  />
      <xs:element name="BackgroundBitmapPath" type="xs:string" maxOccurs="1"/>
      <xs:element name="ImageIndex" type="xs:string" default="1" maxOccurs="1"/>
      <xs:element name="EnableLabShell" type="BoolString" maxOccurs="1"/>
      <xs:element name="ExportedFilePath" type="PathToFile" minOccurs="1"  maxOccurs="1"/>
    </xs:choice>
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  
  <xs:group name="DriverImportActions">
    <xs:choice>
      <xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions" use="required"/>
          <xs:attribute name="DriverID" type="xs:string" use="optional"/>
          <xs:attribute name="CategoryName" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="DriverPackage" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions" use="required"/>
          <xs:attribute name="DriverID" type="xs:string" use="optional"/>
          <xs:attribute name="PackageID" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Folder" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions" use="required"/>
          <xs:attribute name="FolderName" type="xs:string" />
          <xs:attribute name="ParentContainerNode" type="xs:string" />
        </xs:complexType>
      </xs:element>
      <xs:element name="BootImage" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="Action" type="AddRemoveActions" use="required"/>
          <xs:attribute name="DriverID" type="xs:string" use="optional"/>
          <xs:attribute name="BootImageID" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:choice>
  </xs:group>


  <xs:complexType name="TaskSequencePackagePropertyValues" mixed="true">
    <xs:choice maxOccurs="unbounded">
      <xs:group ref="PackagePropertiesValues"  maxOccurs="1"/>
      <xs:element type="OSServerDetails" name="SupportedOperatingSystems" maxOccurs="1"/>
      <xs:element name="ProgramFlags" maxOccurs="unbounded">
        <xs:complexType>
          <xs:choice>
            <xs:element type="TaskSequencePackageProgramFlags" name="TaskSequencePackageProgramFlag"  maxOccurs="unbounded"/>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:string" name="BootImageID" maxOccurs="1"/>
      <xs:element type="xs:string" name="Category" maxOccurs="1"/>
      <xs:element type="xs:string" name="CustomProgressMsg" maxOccurs="1"/>
      <xs:element type="xs:string" name="DependentProgram" maxOccurs="1"/>
      <xs:element type="xs:int" name="Duration" maxOccurs="1" />
      <xs:element type="xs:int" name="Type" maxOccurs="1" default="1">
        <xs:annotation>
          <xs:documentation>
            The type of task sequence represented by the package. Possible values are:
            1   Generic task sequence
            2   Operating system deployment task sequence
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:choice>
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Action" type="GeneralObjectActions"/>
  </xs:complexType>

  <xs:complexType name="DriverPropertyValues">
    <xs:choice>
      <xs:element  name="Categories">
        <xs:complexType>
          <xs:sequence>
            <xs:element  type="xs:string" name="CategoryName" minOccurs="1" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element  type="xs:string" name="DisplayName" />
      <xs:element  type="xs:string" name="Description" />
      <xs:element  type="xs:string" name="InformativeURL" />
      <xs:element type="PathToFile" name="ContentSourcePath"/>
      <xs:element  type="xs:string" name="ApplicabilityCondition" />
      <xs:element type="BoolString" name="IsBundle" />
      <xs:element type="BoolString" name="IsEnabled" />
      <xs:element type="BoolString" name="IsExpired" />
      <xs:element type="BoolString" name="IsHidden" />
    </xs:choice>
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Action" type="DriverActions"/>
  </xs:complexType>

  <xs:complexType name="TaskSequenceStep">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element type="TaskSequenceActionTypes" name="ActionName"  maxOccurs="1"/>
      <xs:element type="TaskSequenceCondition" name="Condition"  maxOccurs="unbounded"/>
      <xs:element type="BoolString" name="ContinueOnError" />
      <xs:element type="xs:string" name="Description" />
      <xs:element type="BoolString" name="Enabled" />
      <xs:element type="xs:string" name="Name" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="TaskSequenceGroup">
    <xs:choice maxOccurs="unbounded">
      <xs:element type="TaskSequenceCondition" name="Condition" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Steps" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Step" maxOccurs="unbounded" type="TaskSequenceStep" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="BoolString" name="ContinueOnError" />
      <xs:element type="xs:string" name="Description" />
      <xs:element type="BoolString" name="Enabled" />
      <xs:element type="xs:string" name="Name" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="ScheduleToken">
    <xs:sequence>
      <xs:element name="DayDuration" type="xs:int" />
      <xs:element name="HourDuration" type="xs:int" />
      <xs:element name="MinuteDuration" type="xs:int" />
      <xs:element name="StartTime" type="xs:dateTime" />
      <xs:element name="IsGMT" type="BoolString" />
    </xs:sequence>
  </xs:complexType>

  <xs:group name="CCRProperties">
    <xs:sequence>
      <xs:element name="ResourceID" type="xs:int" />
      <xs:element name="PushOnlyAssignedClients" type="BoolString"  minOccurs="0"/>
      <xs:element name="Forced" type="BoolString"  minOccurs="0"/>
      <xs:element name="PushEvenIfDC" type="BoolString" minOccurs="0"/>
      <xs:element name="InformationOnly" type="BoolString" minOccurs="0"/>
    </xs:sequence>
  </xs:group>


  <xs:complexType name="CollectionProperties">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="Comment" type="xs:string"  minOccurs="0" maxOccurs="1"/>
      <xs:element name="ParentCollectionID" type="xs:string"  minOccurs="0" maxOccurs="1"/>
      <xs:choice minOccurs="1" maxOccurs="unbounded">
        <xs:element name="DirectCollectionRule" maxOccurs="unbounded">
          <xs:complexType>
            <xs:all minOccurs="1">
              <xs:element name="RuleName" type="xs:string" minOccurs="1"  maxOccurs="1"/>
              <xs:element name="ResourceClassName" type="xs:int" fixed="5" maxOccurs="1" minOccurs="1"/>
              <xs:element name="ResourceID" type="xs:string" minOccurs="1" maxOccurs="1"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element name="QueryCollectionRule" maxOccurs="unbounded">
          <xs:complexType mixed="true">
            <xs:all minOccurs="0">
              <xs:element name="RuleName" type="xs:string"  minOccurs="1" maxOccurs="1"/>
              <xs:element name="QueryString" type="xs:string" minOccurs="0" maxOccurs="1"/>
              <xs:element name="LimitToCollectionID" type="xs:string" minOccurs="0" maxOccurs="1"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:element name="RefreshSchedule" type="ScheduleToken" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="ID" type="xs:string" use="required" />
    <xs:attribute name="Action" type="GeneralObjectActions"/>
  </xs:complexType>

  <xs:simpleType name="BoolString">
    <xs:restriction base="xs:string">
      <xs:enumeration value="true">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="false" >
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>


  <xs:simpleType name="CommandTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="EXE">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VBScript">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PowerShell">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CMDorBAT">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CmdLineString">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="WindowTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Hidden">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Minimized">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Normal">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Maximized">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ResultTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Success">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Failure">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Reboot">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>


  <xs:complexType name="ResultCodeTemplate">
    <xs:sequence>
      <xs:element name="Code" minOccurs="1" type="xs:string">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TranslatedCode" minOccurs="0" type="xs:string">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" type="xs:string">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ResultType" minOccurs="1" type="ResultTypes">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="PackageObjectTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Package">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DriverInf">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DriverCategory">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DriverPackage">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BootImagePackage">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OSInstallationPackage">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OSImagePackage">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Program">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Advertisement">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TaskSequence">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Report">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Computer">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DownloadFileTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ZIP">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EXE">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MSI">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ISO">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WIM">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VB">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BAT">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CMD">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TXT">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DOC">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PDF">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTHER">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DownloadFileLocationTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="HTTP">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HTTPS">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FTP">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UNC">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LOCAL">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="TaskTemplate">
    <xs:sequence>
      <xs:element name="ResultCodes" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation></xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence minOccurs="0">
            <xs:element name="ResultCode" minOccurs="1" maxOccurs="unbounded" type="ResultCodeTemplate">
              <xs:annotation>
                <xs:documentation></xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:key name="ResultCodeOrder">
          <xs:selector xpath=".//ResultCode" />
          <xs:field xpath="@Code" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="ID" type ="xs:string" use ="required">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Name" type ="xs:string" use ="optional">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Executable" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Parameters" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CommandType" type="CommandTypes" use="required">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="WorkingDirectory" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="RunAsUser" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="RunAsPassword" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="RunWindow" type="WindowTypes" use="optional">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="IgnoreErrors" type="BoolString" use="optional">
      <xs:annotation>
        <xs:documentation></xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="CustomActionPropertiesType">
    <xs:sequence>
      <xs:element name="ActionXmlInfo">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Nodes">
              <xs:complexType>
                <xs:sequence minOccurs="1" maxOccurs="unbounded">
                  <xs:element name="NodeGuid" minOccurs="1" maxOccurs="unbounded" type="xs:string"></xs:element>
                  <xs:element name="FileName" minOccurs="1" maxOccurs="1" type="xs:string"></xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ActionXmlContent">
        <xs:complexType>
          <xs:sequence>
            <xs:element  name="ActionDescription" minOccurs="1"  maxOccurs="1">
              <xs:complexType>
                <xs:choice maxOccurs="1">
                  <xs:group ref="GroupTypeGroup"></xs:group>
                  <xs:group ref="ShowDialogTypeGroup"></xs:group>
                  <xs:group ref="ExecutableTypeGroup"></xs:group>
                  <xs:group ref="AssemblyTypeGroup"></xs:group>
                  <xs:group ref="ReportTypeGroup"></xs:group>
                </xs:choice>
                <xs:attribute name="Class" type="CustomActionClassTypes" />
                <xs:attribute name="DisplayName" type="xs:string" />
                <xs:attribute name="MnemonicDisplayName" type="xs:string" default="Mnemonic"/>
                <xs:attribute name="Description" type="xs:string" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ActionFormInfo">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FileName" minOccurs="1" maxOccurs="1" type="xs:string"></xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ActionFormContent" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Form" minOccurs="1"  maxOccurs="1">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Assembly">
                    <xs:complexType>
                      <xs:attribute name="Name" type="xs:string" use="required" />
                      <xs:attribute name="Namespace" type="xs:string" use="required"/>
                      <xs:attribute name="ClassType" type="xs:string" use="required"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Id" type="xs:string"  use="required"/>
                <xs:attribute name="CustomData" type="xs:string" default="SomeData"/>
                <xs:attribute name="FormType" type="xs:string" default="CustomDialog"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="ID" type="xs:string">
      <xs:annotation>
        <xs:documentation>This is a user-specified unique identifier that will be used to link this object with others</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Action" type="GeneralObjectActions" use="required"/>
  </xs:complexType>


  <xs:simpleType name="CustomActionClassTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Group">
        <xs:annotation>
          <xs:documentation>Creates a menu group, also known as a submenu, for related actions</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AssemblyType">
        <xs:annotation>
          <xs:documentation>Defines the type and assembly for a method that is called by the Configuration Manager 2007 console.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Executable">
        <xs:annotation>
          <xs:documentation>Runs a program or opens a file by using the program registered with Windows for that file type.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Report">
        <xs:annotation>
          <xs:documentation>Displays a Configuration Manager 2007 report in the Configuration Manager console</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ShowDialog">
        <xs:annotation>
          <xs:documentation>Opens a property sheet or regular dialog box in the Configuration Manager console. With the ShowDialog action, you can display existing dialog boxes or extension dialog boxes that you create.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  
  
  <xs:group name="ReportTypeGroup">
    <xs:sequence>
      <xs:element name="ReportDescription">
        <xs:complexType>
          <xs:attribute name="Id" type="xs:string" use="required"></xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>

  <xs:group name="AssemblyTypeGroup">
    <xs:sequence>
      <xs:element name="ActionAssembly">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Assembly" type="xs:string" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="Type" type="xs:string" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="Method"  type="xs:string" minOccurs="1" maxOccurs="1"></xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>

  <xs:group name="ExecutableTypeGroup">
    <xs:sequence>
      <xs:element name="Executable">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FilePath" type="xs:string" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="Parameters" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>

  <xs:group name="ShowDialogTypeGroup">
    <xs:sequence>
      <xs:element name="DialogId" type="xs:string" minOccurs="1" maxOccurs="1"></xs:element>
    </xs:sequence>
  </xs:group>
  
  
  <xs:complexType name="CustomActionClassGroups">
    <xs:choice maxOccurs="1">
      <xs:group ref="ShowDialogTypeGroup"></xs:group>
      <xs:group ref="ExecutableTypeGroup"></xs:group>
      <xs:group ref="AssemblyTypeGroup"></xs:group>
      <xs:group ref="ReportTypeGroup"></xs:group>
    </xs:choice>
  </xs:complexType>

  <xs:group name="GroupTypeGroup">
    <xs:sequence>
      <xs:element name="ActionGroups">
        <xs:complexType>
          <xs:sequence minOccurs="1" maxOccurs="unbounded">
            <xs:element  name="ActionDescription" minOccurs="1"  maxOccurs="1">
              <xs:complexType>
                <xs:choice minOccurs="1" maxOccurs="1">
                  <xs:group ref="ShowDialogTypeGroup"></xs:group>
                  <xs:group ref="ExecutableTypeGroup"></xs:group>
                  <xs:group ref="AssemblyTypeGroup"></xs:group>
                  <xs:group ref="ReportTypeGroup"></xs:group>
                </xs:choice>
                <xs:attribute name="Class" type="CustomActionClassTypes" />
                <xs:attribute name="DisplayName" type="xs:string" />
                <xs:attribute name="MnemonicDisplayName" type="xs:string" default="Mnemonic"/>
                <xs:attribute name="Description" type="xs:string" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
                  
  
</xs:schema>
